package com.fishery.quartz.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fishery.quartz.entity.Task;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fishery.quartz.entity.vo.UpdateTaskVo;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author ghost
 * @since 2021-02-21
 */
public interface TaskService extends IService<Task> {

	/**
	 * 通过状态获取所有到任务
	 *
	 * @param status
	 * @return
	 */
	List<Task> getAllTasksByStatus(String status);

	/**
	 * 创建任务
	 *
	 * @param task
	 * @return
	 */
	boolean createTask(Task task);

	/**
	 * 通过任务ID、任务名、任务组名暂停任务
	 *
	 * @param id
	 * @param jobName
	 * @param jobGroup
	 * @param modifiedName
	 * @return
	 */
	boolean stopTask(String id, String jobName, String jobGroup, String modifiedName);

	/**
	 * 通过任务ID、任务名、任务组名删除任务
	 *
	 * @param id
	 * @param jobName
	 * @param jobGroup
	 * @param modifiedName
	 * @return
	 */
	boolean removeTask(String id, String jobName, String jobGroup, String modifiedName);

	/**
	 * 通过任务ID、任务名、任务组名恢复任务
	 *
	 * @param id
	 * @param jobName
	 * @param jobGroup
	 * @param modifiedName
	 * @return
	 */
	boolean resumeTask(String id, String jobName, String jobGroup, String modifiedName);

	/**
	 * 修改任务相关参数
	 *
	 * @param vo
	 * @return
	 */
	boolean updateParamsOfTask(UpdateTaskVo vo);

	/**
	 * 分页获取正在运行的任务
	 *
	 * @param current
	 * @param size
	 * @return
	 */
	Page<Task> getPageOfAllRunningTasks(int current, int size);

	/**
	 * 分页获取暂停的任务
	 *
	 * @param current
	 * @param size
	 * @return
	 */
	Page<Task> getPageOfAllStopTasks(int current, int size);
}
